Skip to main content

7.2.2 Create a scan code payment order for any amount of digital currency (merchant-defined exchange rate)

#Brief description: Digital currency recharge business interface, users can recharge USDT (Tether) to their digital wallet account by scanning the QR code (merchant’s customized exchange rate, need to log in to the merchant’s backend settings)

Request parameters
Parameter nameTypeRequiredParameter meaningParameter description
keystringYesMerchant keyapiKey
localOrderIdstringYesMerchant platform local order numberMerchant platform generates unique order number locally
localUserIdstringNoMerchant platform local user IDMerchant platform local user ID
notifyUrlstringNoCallback addressAfter the order is successfully placed, the address of the merchant will be notified by API callback (callback details are at the bottom)
successRedirectUrlstringNoJump addressAutomatically jump to address after success
currencystringYesOrder pricing currencyPricing currency (wallet supported currency)
userCurrencystringYesUser payment currencyThe currency that the user needs to pay (digital currency supported by the wallet)
amountnumberNoUser's expected payment amount
isBlockchainbooleanNoWhether to return blockchain information (default false)When true, the callback request will carry the transaction information on the order chain
networkLimitsarrayNoMainnetDesignated payment mainnet, such as TRON, BSC, POLYGON, ETHEREUM
expireSecondLongNoExpiration timestamp (seconds)
signstringYesSignatureSee Signature Algorithm for details
Request json sample
{
"key": "9yUreYgTRtit39Dy",
"localOrderId": "1732322-111",
"notifyUrl": "http://127.0.0.1:8080/merchant-demo/notify",
"amount": 8,
"currency": "CNY",
"userCurrency": "USDT",
"networkLimits": ["TRON"],
"isBlockchain": true,
"sign": "6c82150ae89fc0fa202f98c92023ef04"
}

Response json example

{
"code": 0,
"success": true,
"message": null,
"data": {
"orderId": 274185964909271,
"localUserId": null,
"localOrderId": "1732322-111",
"orderType": "PAYMENT",
"orderBizType": "PAYMENT_ANY_USDT_WALLET_SCAN",
"paymentUrl": "https://walletapi.vapyapp.com/any-amount-pay/NanZCtCLCcFQbqbPyy3KJkFPYNTaZGuGjyibkAVjVuebjHWi2QuVrM5QUxg4",
"publicKey": "NanZCtCLCcFQbqbPyy3KJkFPYNTaZGuGjyibkAVjVuebjHWi2QuVrM5QUxg4"
}
}

The returned paymentUrl pops up the payment page, as shown below:

![img](/dx-docs/7- 7、数字币代收(充值)/7.2 数字币任意金额扫码/usdt.jpg)

Response data parameter description
Parameter nameTypeParameter meaningParameter description
orderIdstringOrder ID
localUserIdstringMerchant local user ID
localOrderIdstringMerchant local order number
orderTypeenumOrder TypePAYMENT:支付订单 WITHDRAW:提款订单
orderBizTypeenumOrder business typeorderBizType type description is as follows
paymentUrlstringPayment address
publicKeystringPublic Access Key

orderBizType type description:

  1. PAYMENT_WALLET_SCAN MINPAY wallet scan code payment
  2. PAYMENT_TRANSFER digital currency binding address direct deposit
  3. PAYMENT_ANY_DIGITAL_SCAN Scan the QR code to pay any amount of digital currency
  4. WITHDRAW_WALLET withdraw money to MINPAY wallet
  5. WITHDRAW_ANY_DIGITAL_WALLET Withdraw digital currency to any wallet
  6. PAYMENT_FIXED_DIGITAL_SCAN digital currency limited amount scan code payment
  7. BATCH_PAY batch payment

Callback returns json data

By default, all callback parameters participate in signature verification. For details of callback parameters, please see callback ]

Callback data
{
"amount": 8,
"bizType": "PAYMENT_FIXED_DIGITAL_SCAN",
"blockchain": {
"network": "TRON",
"receiverAddress": "TA1jptT16DssYWVGdVyFWxonku6hWK7En3",
"senderAddress": "TPutFhYUQnrRxHSmKVwjp55vgk9QY6r5nS",
"txId": "24d0d0e5d417bd2195c45d64724760ae47fc3b359ee31c5fedf25b40f3584b36"
},
"currency": "USDT",
"key": "h3cS7dBltRU4W1wD",
"localOrderId": "2820",
"merchantActualAmount": 8.86,
"extra": {
"quoteAmount": 10,
"quoteCurrency": "CNY",
"quotePrice": 10
},
"merchantCurrency": "CNY",
"merchantId": 303122065665,
"merchantPaidAmount": 10.98,
"merchantUserId": "97",
"notifyTime": 1731572168370,
"orderCreateTime": 1731572133082,
"orderId": "273124814912907",
"sign": "699806308a9e055114c378671b0d2a15",
"status": "SUCCESS",
"type": "PAYMENT",
"userAmount": 1.55,
"userCurrency": "USDT",
"userReceivableAmount": 1.55
}
Parameter nameTypeParticipating signatureParameter meaningParameter description
amountdecimalYesOrder Amount
bizTypeenumYesOrder Type
blockchainobjectYesChain transaction informationWhen the order request parameter isBlockchain is true, the callback request will carry this object information. (When only on-chain transactions are involved, the isBlockchain parameter will take effect)
└networkStringYesMainnet
└receiverAddressStringYesReceiver Address
└senderAddressdecimalYesSending Address
└txIdStringYesTransaction ID
currencyStringYesCurrency
keyStringYesMerchant key
localOrderIdStringYesLocal order number
merchantActualAmountdecimalYesMerchant’s actual payment amount
merchantCurrencyStringYesMerchant payment currencyDefault currency
merchantIdStringYesMerchant ID
merchantPaidAmountdecimalYesMerchant payment amount
merchantUserIdStringYesUser id
notifyTimelongYesCallback time
orderCreateTimelongYesOrder Creation Time
orderIdStringYesOrder number
statusStringYesPayment Status
typeStringYesOrder TypePAYMENT:支付 WITHDRAW:提款
userAmountdecimalYesUser payment amount
userCurrencyStringYesUser payment currency
signStringNomd5 signatureSee signature algorithm for details
extraobjectYesContains the following parameters
└quoteAmountnumberYesOrder quote amount
└quoteCurrencynumberYesOrder quote currency
└quotePricestringYesOrder quotation price
userReceivableAmountstringYesAmount payable by the user

When you receive the callback notification, please directly return the string success after the processing is completed, indicating that the message has been successfully received and processed. After the system receives the success response, it will no longer send the callback repeatedly. If the expected response is not received (success is not returned or an exception is returned), the system will resend the callback notification according to the stepped retry mechanism, retrying up to 14 times. The current retry intervals are: 15s, 15s, 30s,180s, 600s, 1200s, 1800s, 1800s, 1800s,3600s,10800s,10800s,21600s, 21600s